"""
@Project ：Python 
@File    ：03-list（列表）的遍历.py
@IDE     ：PyCharm 
@Author  ：DongCha
@Date    ：2023/11/8 0008 11:34 
"""

# while循环
# 将容器内的元素依次取出进行处理的行为称之为遍历或迭代
# 如何遍历列表的元素
# 通过while循环
# 如何在循环中取出列表的元素
# 通过下标索引
# 循环条件如何控制
# 循环条件为下标值 < 列表的元素数量
# 基本语法：
# index = 0
# while index < len(列表):
#     元素 = 列表[index]
#     对元素进行处理
#     index += 1


def list_while_func():
    """
    使用while循环遍历列表
    :return: None
    """
    # 创建一个列表
    list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    # 创建一个索引
    index = 0
    # 循环条件
    while index < len(list_1):
        # 取出元素
        element = list_1[index]
        # 处理元素
        print(element)
        # 索引值加1
        index += 1


# for循环
# 基本语法
# for 临时变量 in 数据容器:
#     对临时变量进行处理


def list_for_func():
    """
    使用for循环遍历列表
    :return: None
    """
    # 创建一个列表
    list_2 = [2, 4, 6, 8, 10]
    # 循环条件
    for i in list_2:
        # 处理元素
        print(i)


if __name__ == '__main__':
    # 调用函数（while循环遍历列表）
    list_while_func()

    print("-" * 10)

    # 调用函数（for循环遍历列表）
    list_for_func()

# 二者的区别：
# 循环控制上
# while循环可以自定义循环条件，并自行控制
# for循环不可以自定义循环条件，只可以一个个共容器内取出数据
# 无限循环上
# while循环可以实现无限循环
# for循环不可以实现无限循环，因为被遍历的容器量不是无限的
# 使用场景上
# while循环适用于任何想要循环的场景
# for循环适用于遍历数据容器的场景或简单的固定次数循环场景

# 定义一个列表，内容是：[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 遍历列表，取出列表内的偶数，并存入一个新的列表对象中
# 使用while循环和for循环各操作一次

# 创建列表
list_1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 定义两个空列表来保存数据
list_2 = list()
list_3 = list()

# 使用while循环
index = 0
while index < len(list_1):
    if list_1[index] % 2 == 0:
        list_2.append(list_1[index])
print(f"利用while循环遍历列表，取出偶数，并存入一个新的列表对象中：{list_2}")

# 使用for循环
for element in list_1:
    if element % 2 == 0:
        list_3.append(element)
print(f"利用for循环遍历列表，取出偶数，并存入一个新的列表对象中：{list_3}")
